package main

import (
	"fmt"
	"strings"
)

// 字符串
func main() {
	// 字符串 双引号包裹
	var str string = "hello go"
	// 字符 单引号包裹
	c := 'h'

	fmt.Printf("c: %v type:%T\n", c, c)       // c: 104 type:int32
	fmt.Printf("str: %v type:%T\n", str, str) // str: hello go type:string

	/*
		转义符:
		\r	回车符（返回行首）
		\n	换行符（直接跳到下一行的同列位置）
		\t	制表符
		\'	单引号
		\"	双引号
		\\	反斜杠
	*/
	path := "C:\\Users\\Mrnianj\\go"
	fmt.Printf("path: %v\n", path) // path: C:\Users\Mrnianj\go

	// 多行字符串(模板字符串)
	s1 := `
	第一行
	第二行
	`
	fmt.Printf("s1: %v\n", s1)

	// 字符串常用方法
	name := "李湘"
	world := "world"
	// 1) 字符串拼接
	ss := name + world
	fmt.Printf("ss: %v\n", ss) // ss: 李湘world
	fmt.Println(name + world)  // 李湘world
	ss1 := fmt.Sprintf("%s%s", name, world)
	fmt.Printf("ss1: %v\n", ss1)      // ss1: 李湘world
	fmt.Printf("%s%s\n", name, world) //李湘world
	// 22) 字符串分割
	ret := strings.Split(path, "\\")
	fmt.Printf("ret: %v\n", ret) // ret: [C: Users Mrnianj go]
	// 3) 判断是否包含
	fmt.Println(strings.Contains(ss, "world")) // true
	// 4) 前后缀
	fmt.Println(strings.HasPrefix(ss, "hello")) // false
	// 5) 判断字符串位置
	fmt.Println(strings.Index(ss, "w"))     // 6
	fmt.Println(strings.LastIndex(ss, "l")) // 9
	// 6) 拼接
	fmt.Println(strings.Join(ret, "--")) // C:--Users--Mrnianj--go

}
